'''
     # 2025-4月新增：配置文件内容的读取
'''

import configparser
import os
from API.config import setting
import logging

# # 获取当前脚本路径
# curpath = os.path.dirname(os.path.realpath(__file__))
# # 使用相对路径计算配置文件的路径
# config_file = os.path.join(curpath, "..", "database", "config.ini")
# # 转换为绝对路径
# config_file = os.path.abspath(config_file)
config_file = os.path.abspath(setting.Test_Config)
# 配置文件读取
config = configparser.ConfigParser()
config.read(config_file, encoding='UTF-8')
config.optionxform = str

# 打印配置文件路径和内容
# print("Config file path:", config_file)
# print("Available sections in config:", config.sections())


# 读取配置项
def read_config(section, option):
    try:
        return config.get(section, option)
    except (configparser.NoSectionError, configparser.NoOptionError) as e:
        # 可选择记录日志，或返回空值
        logging.error(f"Error reading_config: {e}")
        return None


# 获取配置[envs]或[token]等
def get_config(section, option):
    """
    获取配置文件中指定 section 和 option 的值
    :param section: 配置区块名（如 envs、token）
    :param option: 配置项名（如 test、access-token1）
    :return: 对应的值，若无则返回 None
    """
    if not config.has_section(section):
        logging.error(f"[get_config] Section '{section}' not found.")
        return None
    if not config.has_option(section, option):
        logging.error(f"[get_config] Option '{option}' not found in section '{section}'.")
        return None
    return config.get(section, option)


def get_url(url=None, path=None):
    # 环境默认envs
    section = 'envs'
    if url is None:
        # 无指定 默认test
        url = 'test'
    url = get_config(section,url)
    # 存在path就添加
    if path:
        # http://ip:port/path
        url = url + path
    return url


# 获取配置[common_headers]和[user_headers_1_0_6]等头部信息，并合并
def get_common_headers(*sections):
    common_headers = {}
    for section in sections:
        if config.has_section(section):
            for option in config.options(section):
                value = read_config(section, option)
                if value:
                    common_headers[option] = value
        else:
            logging.error(f"get_common_headers: '{section}' not found.")  # 如果没有找到 section
    return common_headers


# 调用检查配置项
# get_common_headers('common_headers', 'teacher_headers')
